项目需要添加文件下载的功能,一开始想要用 FileDownLoader,后来再 github 上看到作者基于 FileDownloader 改版了一个 FileDownloader2,即 OkDownload 。看作者的意思 OKDownLoad 的存在是因为 FileDownloader 不方便进行单元测试,另一个原因是核心代码过于臃肿复杂,基于这些原因,才有了 OKDownload。OkDownload是一款多线程断点续传下载引擎,它的功能完整,性能高,可配置性高,可以注入自定义组件来修改下载策略、替换网络请求框架等等。
相对于FileDownloader的优势
- 单元测试覆盖度非常高
- 更简单的接口
- 支持任务优先级
- 使用Uri标识文件来存储output-stream
- 核心代码更加轻量及纯净
- 更灵活的回调、监听机制
- 更容易扩展
- 保持性能的基础上减少线程数量
- 文件IO线程池独立于网络IO线程池
- response header中不包含文件名时,自动从URL中获取(使用正则表达式实现)